//
//  LYDatabase+Migrate.h
//  Apps
//
//  Created by 李永彬 on 2019/6/5.
//  Copyright © 2019 appscomm. All rights reserved.
//

#import "LYDatabase.h"

#define tableNamePrefix @"t_"
NS_ASSUME_NONNULL_BEGIN

@interface LYDatabase (Migrate)

/**
 检查多个表是不是需要更新

 @param array 需要更新表的数组
 @return 需要更新的表的数组
 */
- (BOOL)needUpdateTableArray:(NSArray <Class>*)array;

/**
 需要更新哪些表
 
 @param array 需要更新表的数组
 @return 有哪些字段
 */
- (NSArray <Class>*)needUpdateTable:(NSArray <Class>*)array;


/**
 获取表中的字段名

 @param tableName 表名
 @return 字段名数组
 */
- (NSArray *)columnsWithTable:(NSString *)tableName;


/**
 数据库中存在的表

 @return 表名数组
 */
- (NSArray*)sqliteExistsTables;


/**
 获取数据库版本号

 @param tableName 表名
 @param column 字段名
 @return 版本号
 */
- (NSInteger)selectWithTableName:(NSString *)tableName
                           column:(NSString *)column;

/**
 如果不存在管理版本号的表，则创建，并插入版本号
 否则，更新版本号

 @param tableName 表名
 @param column 字段名
 @param version 版本号
 */
-(void)createToInsertOrUpdateTableName:(NSString *)tableName
                                column:(NSString *)column
                               version:(NSInteger)version;

- (void)createIfNotExistTable:(NSString *)table version:(NSInteger)version column:(NSString *)column;

- (void)updateVersion:(NSInteger)version withTableName:(NSString *)tableName column:(NSString *)column;

@end

NS_ASSUME_NONNULL_END
